// /**
//  * 封装 axios 请求模块
//  */
// import axios from 'axios'

// // 创建一个axios实例对象
// const request = axios.create({
//   baseURL: 'http://toutiao-app.itheima.net' // 基础路径
// })

// // 配置请求拦截器

// // 配置响应拦截器

// // 暴露出去
// export default request
// import axios from 'axios'
// const request = axios.create({
//   baseURL: 'http://toutiao-app.itheima.net'
// })
// export default request
import axios from 'axios'
import store from '@/store'
import jsonBig from 'json-bigint'
import transform from 'lodash.transform'
// const request = axios.create({
//   baseURL: 'http://toutiao-app.itheima.net'
// })
const request = axios.create({
  baseURL: 'http://toutiao-app.itheima.net',
  // baseURL: 'http://192.168.11.56:8000'

  transformResponse:[function(data){
  try {
    return jsonBig.parse(data)
  } catch (err) {
    return data
  }
  }]
})


// 请求拦截器   <===========增加
request.interceptors.request.use(function (config) {
  // config ：本次请求的配置对象
  // config 里面有一个属性：headers
  const { user } = store.state
  if (user && user.token) {
    config.headers.Authorization = `Bearer ${user.token}`
  }
  return config
}, function (error) {
  return Promise.reject(error)
})

request.interceptors.response.use(function(response){
  return response
},
async function(error) {
  console.log.dir(error);
  if (error.response&& error.response===401) {
    const user=store.state.user
    if (!user||user.refresh_token) {
      router.push("/login")
      return
    }
    try {
      const res =await axios({
        method: "PUT",
        url: "http://toutiao-app.itheima.net/v1_0/authorizations",
        headers: {
          Authorization: `Bearer ${user.refresh_token}`
        }
      })
      console.log("刷新 token  成功", res);
      store.commit("setUser", {
        token: res.data.data.token, 
        refresh_token: user.refresh_token 
      });
      return request(error.config);
    } catch (error) {
      console.log("请求刷线 token 失败", err);
      router.push("/login");
    }
  }
  return Promise.reject(error);
}
)
export default request
